package com.cjj.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 接下来，用户可能是在学习 Spring Boot 的静态资源处理，或者遇到了文件上传下载的问题。这段代码主要是配置静态资源映射，将本地文件系统中的路径映射到 Web 应用的 URL 路径上，这样用户就可以通过浏览器访问这些文件了。
 * 首先，我应该解释每个部分的作用。@Configuration 注解标记这个类是配置类，Spring 会在启动时加载它。WebMvcConfigurer 接口允许我们自定义 Spring MVC 的配置，比如添加拦截器、格式化器、静态资源处理等。
 * 然后，addResourceHandlers 方法是关键。这里用户获取了项目的根目录路径，用 System.getProperty ("user.dir")，这在不同操作系统下可能会有不同的路径分隔符，比如 Windows 用反斜杠，Linux 用斜杠。所以代码里做了替换，把反斜杠换成斜杠，确保路径正确。
 * 接着，构造了一个文件路径，使用 file:/// 协议，后面拼接上项目根目录下的 files 目录。然后通过 registry.addResourceHandler ("/files/**") 将所有以 /files/ 开头的 URL 请求映射到这个物理路径上。这样，
 * 当用户访问http://localhost:8080/files/filename.txt时，Spring MVC 就会去项目根目录的 files 文件夹下查找对应的文件。
 */

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 获取项目根目录路径
        String projectRoot = System.getProperty("user.dir");
        // 替换反斜杠为斜杠（Windows 路径兼容）
        String filepath = "file:///" + projectRoot.replace("\\", "/") + "/files/";

        registry.addResourceHandler("/files/**")
                .addResourceLocations(filepath);
    }
}
